Inside Macintosh: QuickTime Components

Previous | Chapter Top | Chapter Contents | Next

Implementing Required Component Functions

Listing 1 supplies the component dispatchers for the preview component together with the can do, version, open, and close functions.

Listing 1 Implementing the required Component Manager functions

typedef struct {
    ComponentInstance       self;
} PICSPreviewRecord, **PICSPreviewGlobals;
/* entry point for all Component Manager requests */
pascal ComponentResult PICSPreviewDispatch
                            (ComponentParameters *params, Handle store)
{
    OSErr err = badComponentSelector;
    ComponentFunction componentProc = 0;
    switch (params->what) {
        case kComponentOpenSelect:
            componentProc = PICSPreviewOpen; break;
        case kComponentCloseSelect:
            componentProc = PICSPreviewClose; break;
        case kComponentCanDoSelect:
            componentProc = PICSPreviewCanDo; break;
        case kComponentVersionSelect:
            componentProc = PICSPreviewVersion; break;
        case kPreviewShowDataSelector:
            componentProc = PICSPreviewShowData; break;
    }
    if (componentProc)
        err = CallComponentFunctionWithStorage (store, params,
                                                             componentProc);
    return err;
}
pascal ComponentResult PICSPreviewCanDo
                            (PICSPreviewGlobals store, short ftnNumber)
{
    switch (ftnNumber) {
        case kComponentOpenSelect:
        case kComponentCloseSelect:
        case kComponentCanDoSelect:
        case kComponentVersionSelect:
        case kPreviewShowDataSelector:
            return true;
        default:
            return false;
    }
}
pascal ComponentResult PICSPreviewVersion
                                        (PICSPreviewGlobals store)
{
    return 0x00010001;
}
pascal ComponentResult PICSPreviewOpen (PICSPreviewGlobals store,
                                         ComponentInstance self)
{
    store = (PICSPreviewGlobals)NewHandle
                                        (sizeof (PICSPreviewRecord));
    if (!store) return MemError();
    SetComponentInstanceStorage (self, (Handle)store);
    (**store).self = self;
    return noErr;
}
pascal ComponentResult PICSPreviewClose
                                        (PICSPreviewGlobals store,
                                        ComponentInstance self)
{
    if (store) DisposeHandle ((Handle)store);
    return noErr;
}

© 1997 Apple Computer, Inc.

Previous | Chapter Top | Chapter Contents | Next